1. Technical Field
The invention pertains to the field of digital data processing systems, particularly to the field of optimizing data processing throughput of data processing systems, through application program load adaptive scheduling of processing time among the application programs.
2. Descriptions of Related Art
Traditional data processing systems, e.g. general purpose computers, rely on operating system (OS) software functionality for scheduling and switching access to the processing system hardware between a number of application software programs that are configured to run on the given shared processing system hardware, referred to as the central processing unit (CPU) of the system. Often, this function of the OS to allocate the CPU time among the application software programs and to schedule and select the individual applications to execute on the shared CPU hardware on their assigned time slices can occupy a significant portion of the processing time capacity of that CPU. Moreover, while the CPU of the given multi-user system is assigned to a given user's application programs for a given time period, all the other users' application programs have to wait, making no progress, thus causing unpredictable, and often unacceptably latent or irregular, user application performance.
Thus, with any conventional OS software based application scheduling, the application programs sharing given processing hardware (CPU) will experience variable delays in waiting for their turn on executing on the CPU. Further still, the more frequently the conventional OS scheduler would run its scheduling and context switching procedures, to change executing applications, in order to reduce the delays the experienced by the individual applications in waiting to execute on the CPU, the greater the portion of the CPU time that is spent by running the OS, thus reducing the portion of the CPU time available for the user applications that such conventional data processing system is intended to serve.
These factors create a need for innovations that enable efficiently scheduling application programs to execute on shared CPUs, while minimizing both the CPU time overhead used for such scheduling and switching functions as well as the delays and delay variations experienced by the applications in waiting their turn to execute on the CPU, in order to maximize the data processing throughput and user application performance of the shared processing system hardware across the range of user software applications that the shared processing system serves.